package com.byesame.demo01.controller;


import com.byesame.demo01.entity.ProClassRequestParam1;
import com.byesame.demo01.entity.ProjectClassEntity;
import com.byesame.demo01.service.ProjectClassService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.util.List;

@RestController // 用于标注控制层组件，其实是 @ResponseBody 和 @Controller 的合集
@RequestMapping("project-class") // http://localhost:8081/project-class
public class ProjectClassController {

    @Value("${byesame.class}")
    private String className;
    @Autowired
    private ProjectClassService projectClassService;

    @RequestMapping("test")
    public String test() {
        return "测试  " + className;
    }

    @PostMapping("test")
    public String test2() {
        return "测试222222222  " + className;
    }

    @GetMapping("/{proId}")
    // http://localhost:8081/project-class/4?stuId=404&classId=18&groupId=505  @RequestParam
    public ProjectClassEntity selectProClassById(@PathVariable Long proId,
                                                  Long stuId,
                                                  Long classId,
                                                  Long groupId
    ) {

        System.out.println("查单个" + proId);
        System.out.println("学生id" + stuId);
        System.out.println("学生id" + classId);
        System.out.println("学生id" + groupId);
        return projectClassService.selectProClassById(proId);
    }

    @GetMapping("/{proId}/obj")
    // http://localhost:8081/project-class/4?stuId=404&classId=18&groupId=505  @RequestParam
    // GET请求中：
    // 后端 定义 以@RequestParam接收参数，那么接收就是前端 url上 query 定义的k=v形式的值
    // 后端 定义 不以任何注解接收参数, 分两种情况： 如果是单个参数，基本数据类型值, 加不加注解都是前端 url上 query 定义的k=v形式的值
    //                                       如果是对象 也就是一个参数，参数值是对象【自动放到请求体】，后端默认接收的是form-data形式的数据类型，则前端以 application/form-data形式传参
    // 后端 定义 以 @RequestBody 接收参数,那么则要求前端 以 Content-type为application/json的形式传参
    public ProjectClassEntity selectProClassById(@PathVariable Long proId, @RequestBody ProClassRequestParam1 param1) {

        System.out.println("查单个" + proId);
        System.out.println("学生id" + param1.getStuId());
        System.out.println("学生id" + param1.getClassId());
        System.out.println("学生id" + param1.getGroupId());
        return projectClassService.selectProClassById(proId);
    }

    @GetMapping
    public List<ProjectClassEntity> selectProClassList(ProjectClassEntity entity) {

        return projectClassService.selectProClassList(entity);
    }
    // @Service  @Mapper
    public List<ProjectClassEntity> selectProClassAndStuList() {
        return null;
    }

    // JSON.stringify({})
    @PostMapping
    public int addProClass(@RequestBody ProjectClassEntity entity) {
        System.out.println(entity);
        return 1;
    }

    @PutMapping
    public int updateProClassById(ProjectClassEntity entity) throws IOException {
        return 0;
    }
    // 批量删除
    @DeleteMapping("/{ids}")
    public int deleteProClassById(@PathVariable int[] ids) throws IOException {
        int[] arr = {111};
        return 0;
    }
}
